package com.atguigu.spzx.manager.service;

import com.atguigu.spzx.manager.entity.SysRole;
import com.atguigu.spzx.manager.vo.sysRole.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;

public interface SysRoleService {

    /**
     * 条件分页查询
     * @param pageParam 分页参数
     * @param sysRoleQueryReqVo 查询条件
     * @return 分页结果
     */
    Page<SysRoleQueryRespVo> getRolePageByQuery(Page<SysRole> pageParam, SysRoleQueryReqVo sysRoleQueryReqVo);

    /**
     * 添加角色
     * @param sysRoleSaveReqVo 角色信息
     */
    void saveRole(SysRoleSaveReqVo sysRoleSaveReqVo);

    /**
     * 查询所有角色
     * @return 角色列表
     */
    List<SysRoleQueryRespVo> getRoleList();

    /**
     * 根据id逻辑删除角色
     * @param id 角色ID
     */
    void deleteRoleById(Long id);

    /**
     * 根据id查询角色
     * @param id 角色ID
     * @return 查询结果
     */
    SysRoleQueryRespVo getRoleById(Long id);

    /**
     * 修改角色信息
     * @param sysRoleSaveReqVo 角色信息
     */
    void updateRoleById(SysRoleUpdateReqVo sysRoleSaveReqVo);

    /**
     * 批量删除角色
     * @param ids 角色ID列表
     */
    void deleteRoleListByIdList(List<Long> ids);

    /**
     * 根据角色获取菜单权限
     * @param roleId 角色ID
     * @return 菜单权限列表
     */
    List<SysRoleAssignMenuQueryVo> getAssignedMenuListByRoleId(Long roleId);

    /**
     * 给角色分配菜单权限
     * @param reqVo 分配信息
     */
    void assignMenuForRole(SysRoleAssignMenuReqVo reqVo);
}
